const express = require('express')
const app = express()

// 定义中间件 并通过app.use()注册为全局中间件 
app.use(function (req, res, next) {
    const time = Date.now()
    // 为req对象挂载自定义属性
    req.starTime = time
    next()
})
app.get('/', (req, res) => {
    // 上下游共享同一份req和res
    res.send('调用全局中间件---'+req.starTime)
})

// =====================================================

// 定义中间件
const mw1 = function(req,res,next){
    console.log('局部的1')
    next()
}
// 定义中间件
const mw2 = function(req,res,next){
    console.log('局部的2')
    next()
}
// 注册为局部中间件 
app.get('/user',mw1,mw2, (req, res) => {
    res.send('调用局部中间件')
})

// =====================================================

app.get('/err', (req, res) => {
    throw new Error('服务器错误')
    // res.send('err') 错误以下不执行
})
// 定义错误级的中间件 捕获错误
// 错误级中间件必须在所有路由级中间件之后
app.use((err,req,res,next)=>{
    res.send(err.message)
    next()
})



app.listen(80, () => {
    console.log('http://127.0.0.1')
})